]> dgit.raspbian.org Git - gnome-shell.git/log
gnome-shell.git
8 months agoenvironment: Use replaceAll()
Alessandro Bono [Fri, 20 Feb 2026 22:57:14 +0000 (23:57 +0100)]
environment: Use replaceAll()

The replace() function expects two parameters, likely the third one
was ignored. Use replaceAll() to replace all the occurrences, not
just the first one.

Fixes: 007b6ca2e ("environment: Add convenience method for implicit animations")
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/4084>

8 months agolookingGlass: Use replaceAll()
Alessandro Bono [Fri, 20 Feb 2026 22:56:17 +0000 (23:56 +0100)]
lookingGlass: Use replaceAll()

Remove all the newlines occurrences, not just the first one.

Fixes: 52ae75d4b ("LookingGlass - JavaScript prompt and interactive Clutter controller")
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/4084>

8 months agopageIndicators: Remove double assignment
Alessandro Bono [Fri, 20 Feb 2026 22:12:50 +0000 (23:12 +0100)]
pageIndicators: Remove double assignment

The same one is just one line above.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/4084>

8 months agosessionMode: Fix modeName extraction
Alessandro Bono [Fri, 20 Feb 2026 21:57:36 +0000 (22:57 +0100)]
sessionMode: Fix modeName extraction

The slice() function expects two numbers as parameters. Pass zero
in order to properly strip the suffix.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/4084>

8 months agoendSessionDialog: Fix invocation call
Alessandro Bono [Fri, 20 Feb 2026 21:48:08 +0000 (22:48 +0100)]
endSessionDialog: Fix invocation call

The function expects a domain, which was missing. Add it.

Fixes: 8f03eec3a ("endSessionDialog: Use registered D-Bus error")
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/4084>

8 months agoobjectManager: Remove unused function
Alessandro Bono [Fri, 20 Feb 2026 21:42:03 +0000 (22:42 +0100)]
objectManager: Remove unused function

Introduced with 4b450bab1164b9b1225702238e539201974a68b6, this function
has never been used. Furthermore it is wrong because objectPaths is not
indexed. Just drop it.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/4084>

8 months agoUpdated Spanish translation
Daniel Mustieles [Mon, 23 Feb 2026 15:09:16 +0000 (16:09 +0100)]
Updated Spanish translation

8 months agoappDisplay: Consider admin defined folders before creating default ones
Sebastian Keller [Sat, 21 Feb 2026 11:32:26 +0000 (12:32 +0100)]
appDisplay: Consider admin defined folders before creating default ones

The system administrator might have defined some default folders system
wide via dconf default values, so checking for user defined values is
not enough. This restores the condition to also skip creating default
ones if the value is not empty. It still skips the creation of default
folders if the empty value was the result of a user action to allow
users deleting all folders.

Fixes: b0d396c82 ("appDisplay: Only create default folders on the first start")
Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/9062
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/4087>

8 months agoUpdate Hungarian translation
Balázs Úr [Sun, 22 Feb 2026 16:56:42 +0000 (16:56 +0000)]
Update Hungarian translation

8 months agoUpdate Swedish translation
Anders Jonsson [Sun, 22 Feb 2026 14:02:59 +0000 (14:02 +0000)]
Update Swedish translation

8 months agoUpdate Finnish translation
Jiri Grönroos [Wed, 18 Feb 2026 10:40:25 +0000 (10:40 +0000)]
Update Finnish translation

8 months agoUpdate Galician translation
Fran Diéguez [Tue, 17 Feb 2026 23:04:09 +0000 (23:04 +0000)]
Update Galician translation

8 months agosearch: Do not use terms class variable after awaiting
Marco Trevisan (Treviño) [Tue, 17 Feb 2026 14:12:59 +0000 (15:12 +0100)]
search: Do not use terms class variable after awaiting

The terms may have been changed after awaiting, so rather than relying
on the local variable, just pass the value to the functions using them

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/4080>

8 months agosearch: Unset the results for the current provider if the new search failed
Marco Trevisan (Treviño) [Tue, 17 Feb 2026 14:02:56 +0000 (15:02 +0100)]
search: Unset the results for the current provider if the new search failed

In case the provider search or subsearch failed, the old results are
preserved, while they should be reset or we may show invalid data

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/4080>

8 months agosearch: Do not check for class cancellable state after awaiting
Marco Trevisan (Treviño) [Mon, 16 Feb 2026 21:11:28 +0000 (22:11 +0100)]
search: Do not check for class cancellable state after awaiting

In an async function, after awaiting, the cancelled state for the
class-tracked cancellable may not respect the actual state of the
cancellable that has been used to perform the call.

Thus, let's use a local variable instead

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/4080>

8 months agosearch: Do not use Cancellable.reset()
Marco Trevisan (Treviño) [Mon, 16 Feb 2026 20:58:25 +0000 (21:58 +0100)]
search: Do not use Cancellable.reset()

Cancellable reset API is deprecated for long time and it's quite broken.
In fact if a search provider receives a cancelled event may end up
checking if the cancellable has been cancelled, but this may not be true
anymore after a reset.

Use instead new cancellable instances so that once one is used we can
consider the previous one completed and we can forget about it.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/4080>

8 months agosearch: Catch async function errors and log them unless cancelled
Marco Trevisan (Treviño) [Mon, 16 Feb 2026 20:29:10 +0000 (21:29 +0100)]
search: Catch async function errors and log them unless cancelled

In case a search function fails, we are not providing clear errors, thus
trace the errors when calling async functions from sync ones and when
catching errors.

Note that at the moment is unlikely to receive any cancelled error here,
since the remote search providers calls handle the error already, but we
still use `logErrorUnlessCancelled` instead of `logError` to be more future
proof or to cover the case in which some extension may throw a cancelled
error.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/4080>

8 months agosearch: Remove callback on updateSearch and only rely on async API
Marco Trevisan (Treviño) [Mon, 16 Feb 2026 20:45:09 +0000 (21:45 +0100)]
search: Remove callback on updateSearch and only rely on async API

Using a callback in an async function does not make much sense, so let's
just use the async API

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/4080>

8 months agosearch: Use async API in search result implementation
Marco Trevisan (Treviño) [Mon, 16 Feb 2026 20:25:36 +0000 (21:25 +0100)]
search: Use async API in search result implementation

SearchResultsBase.updateSearch is an async function but we do not
implement it in the same way in GridSearchResults.

While this is not wrong per se, it makes it harder to follow the chain
and potentially to handle the errors

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/4080>

8 months agostatus/volume: Use the public getter for accessing the stream
Jordan Petridis [Mon, 16 Feb 2026 23:31:26 +0000 (01:31 +0200)]
status/volume: Use the public getter for accessing the stream

Since we are not calling this from the class that defined it (or
derivative), we should be using the public getter to access it.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/4079>

8 months agostatus/volume: Fix typo from f4df530fc
Jordan Petridis [Mon, 16 Feb 2026 15:28:52 +0000 (17:28 +0200)]
status/volume: Fix typo from f4df530fc

I have no excuse, this is embarrassing

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/4079>

8 months agostatus/volume: Check the stream before accessing it
Jordan Petridis [Mon, 16 Feb 2026 02:06:55 +0000 (04:06 +0200)]
status/volume: Check the stream before accessing it

stream-updated will also get emitted when the stream is unset, and trying
to access it then breaks.

In such case we don't need to update the css class of the indicator as it
will be hidden, and we will get another stream-updated before we show
it again anyway.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/4076>

8 months agost/entry: Set "default" cursor on StEntry side icons
Carlos Garnacho [Mon, 16 Feb 2026 11:42:44 +0000 (12:42 +0100)]
st/entry: Set "default" cursor on StEntry side icons

Since the default cursor type is CLUTTER_CURSOR_INHERIT, these
icons started inheriting the CLUTTER_CURSOR_TEXT cursor set on the
StEntry as a whole.

Hint these icons again as interactive by enforcing a default cursor
on them.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/4078>

8 months agoUpdate Basque translation
Asier Saratsua Garmendia [Mon, 16 Feb 2026 07:41:58 +0000 (07:41 +0000)]
Update Basque translation

8 months agoUpdate Chinese (China) translation
luming zh [Sat, 14 Feb 2026 08:46:09 +0000 (08:46 +0000)]
Update Chinese (China) translation

8 months agobuild: Update libgnome-volume-control revision
Sebastian Keller [Wed, 11 Feb 2026 20:49:31 +0000 (21:49 +0100)]
build: Update libgnome-volume-control revision

The update from 79823059 introduced a problem with switching devices in
some cases. This has been fixed now.

See: https://gitlab.gnome.org/GNOME/libgnome-volume-control/-/issues/40
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/4073>

8 months agoUpdate Kazakh translation
Baurzhan Muftakhidinov [Sun, 8 Feb 2026 16:21:35 +0000 (16:21 +0000)]
Update Kazakh translation

9 months agoUpdate German translation
Christian Kirbach [Fri, 6 Feb 2026 22:20:49 +0000 (22:20 +0000)]
Update German translation

9 months agoUpdate Greek translation
Efstathios Iosifidis [Fri, 6 Feb 2026 21:57:21 +0000 (21:57 +0000)]
Update Greek translation

9 months agoUpdate Greek translation
Efstathios Iosifidis [Fri, 6 Feb 2026 21:45:43 +0000 (21:45 +0000)]
Update Greek translation

(cherry picked from commit cdd6b186c392cb6b6780e1df7ae9d7f106917a71)

9 months agoenvironment: Drop Meta.Backend.set_keymap_layout_group_async promisify
Carlos Garnacho [Thu, 5 Feb 2026 21:56:47 +0000 (22:56 +0100)]
environment: Drop Meta.Backend.set_keymap_layout_group_async promisify

This method was removed in mutter, its async promisification is not
necessary anymore.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/4068>

9 months agoUpdate Greek translation
Efstathios Iosifidis [Thu, 5 Feb 2026 02:30:07 +0000 (02:30 +0000)]
Update Greek translation

9 months agoBump version to 50.beta
Florian Müllner [Wed, 4 Feb 2026 17:25:32 +0000 (18:25 +0100)]
Bump version to 50.beta

Update NEWS.

9 months agomain: Call RegisterDisplay once UI has initialized
Joan Torres Lopez [Tue, 3 Feb 2026 13:43:43 +0000 (14:43 +0100)]
main: Call RegisterDisplay once UI has initialized

RegisterDisplay is called to signal that graphics have settled,
which allows GDM to terminate pending greeters and plymouth.

Previously, RegisterSession was used for both recording the login
and terminating greeters. This caused a race condition where the
new user shell was setting up while the greeter was tearing down,
leading to configuration conflicts during the asynchronous handoff.

By splitting into RegisterSession (called early to record login) and
RegisterDisplay (called after graphics settle), the greeter teardown
is delayed until the new session has completed its initial modeset.

Fixes: 32a01330 ("main: Register session with GDM on startup")
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/4057>

9 months agologinManager: Update RegisterSession
Joan Torres Lopez [Tue, 3 Feb 2026 13:39:25 +0000 (14:39 +0100)]
loginManager: Update RegisterSession

RegisterSession no longer accepts parameters, pass null instead of
an empty dict.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/4057>

9 months agoUpdate Czech translation
Daniel Rusek [Wed, 4 Feb 2026 22:24:20 +0000 (22:24 +0000)]
Update Czech translation

9 months agobuild: Update libgnome-volume-control revision (again)
Florian Müllner [Wed, 4 Feb 2026 17:25:32 +0000 (18:25 +0100)]
build: Update libgnome-volume-control revision (again)

The previous update caused duplicated device entries, pull in the
fix.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/4063>

9 months agoswipeTracker: Handle invalid position when finding previous point
Florian Müllner [Wed, 4 Feb 2026 13:12:25 +0000 (14:12 +0100)]
swipeTracker: Handle invalid position when finding previous point

Commit 8e29babca8adc677 switched to `findLastIndex()` to find
the previous point, which inadvertently changed what value is
returned for invalid input.

Restore the old fallback value and log a stacktrace, so we can
hopefully track down what causes the invalid input.

Related: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/8856
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/4062>

9 months agomain: Only call gjs_dumpstack() on warnings from main thread
Sebastian Keller [Wed, 21 Jan 2026 21:54:39 +0000 (22:54 +0100)]
main: Only call gjs_dumpstack() on warnings from main thread

The mozjs code called by gjs_dumpstack() does not appear to be thread
safe and was sometimes resulting in crashes when triggered by error
messages from threads other than the main thread. And even when not
crashing, such a backtrace can only be misleading since only the main
thread is executing JS code.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/4046>

9 months agoUpdate Japanese translation
Seiji Iizuka [Wed, 4 Feb 2026 14:08:32 +0000 (14:08 +0000)]
Update Japanese translation

9 months agoUpdate Persian translation
Danial Behzadi [Wed, 4 Feb 2026 13:28:58 +0000 (13:28 +0000)]
Update Persian translation

9 months agost/password-entry: Update input hints when toggling password visibility
Joan Torres Lopez [Thu, 29 Jan 2026 12:46:19 +0000 (13:46 +0100)]
st/password-entry: Update input hints when toggling password visibility

Set the HIDDEN_TEXT hint when the password is hidden and remove it
when shown. This ensures IBus is aware when it should hide pre-edit
text.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/4053>

9 months agoinputMethod: Honor the HIDDEN_TEXT hint of IBusInputHint
Joan Torres Lopez [Thu, 29 Jan 2026 13:04:40 +0000 (14:04 +0100)]
inputMethod: Honor the HIDDEN_TEXT hint of IBusInputHint

Makes the pre-edit text hidden with a "_".

This hint was added in IBus 1.5.34, although if IBus doesn't support it,
it will silently fallback to no-op which is fine.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/4053>

9 months agostyle: Adjust padding for close button in message list
Ramez Medhat [Sat, 17 Jan 2026 15:33:54 +0000 (17:33 +0200)]
style: Adjust padding for close button in message list

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/4041>

9 months agostatus/volume: Snap to 100% when over-amplification is enabled
revisto [Mon, 22 Dec 2025 21:35:03 +0000 (01:05 +0330)]
status/volume: Snap to 100% when over-amplification is enabled

Sound may be distorted when overamplifying. It is therefore
useful to make it easier for users to select exactly 100%
when allow-volume-above-100-percent is enabled, as that is
the highest non-distorted value.

Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/7279
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/4004>

9 months agoslider: Add mark snapping support
revisto [Mon, 22 Dec 2025 21:32:32 +0000 (01:02 +0330)]
slider: Add mark snapping support

Add API to add and clear marks, similar to GtkScale. The
slider value will snap to a mark when close to it, making
it easy for the user to position the slider exactly at
the mark's value.

The unsnapped value is still tracked internally, to allow
escaping snap zones when the scroll step is smaller than
the snap threshold.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/4004>

9 months agoci: Use meson setup and remove deprecated option --fs-capture-search
Gabriel Poliker-Paul [Fri, 30 Jan 2026 22:12:49 +0000 (22:12 +0000)]
ci: Use meson setup and remove deprecated option --fs-capture-search

meson with options has been deprecated for a while, and it may be fully
phased out soon.

For Coverity, --fs-capture-search was deprecated in 2019.09 and has been
fully removed for almost 2 years[0].

[0] https://documentation.blackduck.com/bundle/coverity-docs-2024.6/page/coverity-analysis/topics/moving_from_filesystem_capture_to_the_coverity_cli.html

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/4059>

9 months agogdm/util: Do not run dispose on user verifier
Marco Trevisan (Treviño) [Wed, 17 Sep 2025 17:06:55 +0000 (19:06 +0200)]
gdm/util: Do not run dispose on user verifier

This is not a good habit anywhere and especially in JS code, I assume
the rationale for this was to ensure that cached instances of the proxy
were cleared, but this did not work properly (as it happened on
finalize), and it would still require [1].

So let's just avoid this and assume that the getters just return what we
expect.

[1] https://gitlab.gnome.org/GNOME/gdm/-/merge_requests/321

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3885>

9 months agogdm/util: Clear the request if user verifier connection is closed
Marco Trevisan (Treviño) [Wed, 17 Sep 2025 17:04:46 +0000 (19:04 +0200)]
gdm/util: Clear the request if user verifier connection is closed

Similarly to previous commit, in case the user verifier connection is
closed we should just clear the user verifier instance, since starting
from this point is going to be just invalid.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3885>

9 months agogdm/loginDialog: Reset the greeter proxy on connection closed
Marco Trevisan (Treviño) [Wed, 17 Sep 2025 16:26:17 +0000 (18:26 +0200)]
gdm/loginDialog: Reset the greeter proxy on connection closed

If gdm fails to start the display session the greeter proxy we are using
gets disconnected, however since commit 56ea95f2 we are now preserving
the greeter instance, and this will eventually lead to using an instance
of a disconnected proxy.

This eventually implies that after a login failure, we would never get
the `::session-opened` signal that actually triggers the session start.

And thus, even the user has properly authenticated, gdm will stick to
the authentication page.

So, instead of reverting such commit (that isn't wrong per se), consume
the greeter proxy connection `::closed` signal and use it to
re-initialize the greeter instance.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3885>

9 months agoUpdate French translation
Jean-Marc TISSIERES [Mon, 2 Feb 2026 13:18:34 +0000 (13:18 +0000)]
Update French translation

9 months agoUpdate Catalan translation
Victor Dargallo [Sun, 1 Feb 2026 20:26:20 +0000 (20:26 +0000)]
Update Catalan translation

9 months agoUpdate Bulgarian translation
twlvnn kraftwerk [Sun, 1 Feb 2026 09:38:07 +0000 (09:38 +0000)]
Update Bulgarian translation

9 months agoUpdate Thai translation
Aefgh Threenine [Sat, 31 Jan 2026 10:34:11 +0000 (10:34 +0000)]
Update Thai translation

(cherry picked from commit 156a171bf341c603ca3270759714ae9b8db6babf)

9 months agoUpdate Lithuanian translation
Aurimas Aurimas Černius [Fri, 30 Jan 2026 21:48:42 +0000 (21:48 +0000)]
Update Lithuanian translation

9 months agobreakManager: Use uninhibitable idle watch
Sebastian Keller [Tue, 6 May 2025 00:40:18 +0000 (02:40 +0200)]
breakManager: Use uninhibitable idle watch

If we use a regular idle watch, any session inhibitors can prevent the
watch from triggering, leading to the break manager to never consider
the break as having been completed until the inhibitor is gone. This
could lead to situations in which the system appears to be stuck with
a dimmed screen.

Also start the idle time when the idle watch is created, otherwise any
previous idle time would count towards it, causing the watch to trigger
early, leaving it inconsistent with the rest of the break manager state.

Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/8378
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3709>

9 months agoUpdate Hebrew translation
Yaron Shahrabani [Fri, 30 Jan 2026 10:09:17 +0000 (10:09 +0000)]
Update Hebrew translation

9 months agoUpdate Kazakh translation
Baurzhan Muftakhidinov [Fri, 30 Jan 2026 02:00:07 +0000 (02:00 +0000)]
Update Kazakh translation

9 months agojs: Use one-shot idle/timeout functions
Florian Müllner [Fri, 31 Oct 2025 17:14:14 +0000 (18:14 +0100)]
js: Use one-shot idle/timeout functions

gjs now provides overrides for GLib's one-shot idle/timeout
functions, so use them to save a bit of code and clearly
indicate that a callback is only invoked once.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3947>

9 months agoextensions-app: Use one-shot idle/timeout functions
Florian Müllner [Fri, 31 Oct 2025 17:13:54 +0000 (18:13 +0100)]
extensions-app: Use one-shot idle/timeout functions

gjs now provides overrides for GLib's one-shot idle/timeout
functions, so use them to save a bit of code and clearly
indicate that a callback is only invoked once.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3947>

9 months agohotplut-sniffer: Use one-shot idle/timeout functions
Florian Müllner [Thu, 29 Jan 2026 13:29:58 +0000 (14:29 +0100)]
hotplut-sniffer: Use one-shot idle/timeout functions

GLib added one-shot variants of the idle/timeout functions a while ago.

While they don't save a lot of code, they serve as a clear marker that
the callback is only invoked once.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3947>

9 months agotray: Use one-shot idle/timeout functions
Florian Müllner [Fri, 31 Oct 2025 17:13:32 +0000 (18:13 +0100)]
tray: Use one-shot idle/timeout functions

GLib added one-shot variants of the idle/timeout functions a while ago.

While they don't save a lot of code, they serve as a clear marker that
the callback is only invoked once.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3947>

9 months agost: Use one-shot idle/timeout functions
Florian Müllner [Fri, 31 Oct 2025 17:13:04 +0000 (18:13 +0100)]
st: Use one-shot idle/timeout functions

GLib added one-shot variants of the idle/timeout functions a while ago.

While they don't save a lot of code, they serve as a clear marker that
the callback is only invoked once.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3947>

9 months agoshell: Use one-shot idle/timeout functions
Florian Müllner [Fri, 31 Oct 2025 16:57:20 +0000 (17:57 +0100)]
shell: Use one-shot idle/timeout functions

GLib added one-shot variants of the idle/timeout functions a while ago.

While they don't save a lot of code, they serve as a clear marker that
the callback is only invoked once.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3947>

9 months agostatus/keyboard: Adapt to external source of keyboard layout
Jonas Ådahl [Fri, 3 Oct 2025 15:02:37 +0000 (17:02 +0200)]
status/keyboard: Adapt to external source of keyboard layout

This adapts to API changes that allow an external source (e.g. remote
desktop API user) to control the current keyboard layout. This is done
in two ways:

If the external keyboard source sets the keymap as "locked", the
indicator is fixed to the short name of the external source, and will
change the indicator label when the layout index is changed accordingly.
The builtin input sources are not selectable, and the keyboard selection
keybinding is disabled.

If the external keyboard source doesn't set the keymap as "locked",
whenever the current keymap is from an external source, it's indicated
as a non-sensitive but selected input source. Selecting another keyboard
layout overrides the one selected by the external entity.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3901>

9 months agoci: Bump mutter image
Florian Müllner [Thu, 29 Jan 2026 14:29:05 +0000 (15:29 +0100)]
ci: Bump mutter image

… to pull in a more recent gjs version.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/4055>

9 months agogdm/util: Set minimum display time for authentication messages
Joan Torres Lopez [Wed, 28 Jan 2026 17:01:26 +0000 (18:01 +0100)]
gdm/util: Set minimum display time for authentication messages

Short messages like "PIN locked" were previously displayed for only
480ms (10 chars × 48ms), making them impossible to read. Ensure all
messages are shown for at least 2 seconds.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/4054>

9 months agoquickSettingsMenu: Add actor group to focus manager
Ramez Medhat [Wed, 21 Jan 2026 15:28:22 +0000 (17:28 +0200)]
quickSettingsMenu: Add actor group to focus manager

This allows focus to menu item using the tab key to match the behaviour in other menus.
Closes https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/8904

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/4043>

9 months agoshell-app: Improve discrete GPU detection
Jan200101 [Sun, 25 Jan 2026 21:33:49 +0000 (22:33 +0100)]
shell-app: Improve discrete GPU detection

The original logic only took into account if a GPU is the "Default",
meaning the GPU used during boot, which was intended for Laptops with
Hybrid Graphics.

The new logic uses the new Discrete key to figure out which GPU is the
most appropriate to use in order of:
- the first non-default GPU if it is discrete
- the first discrete GPU if it exists
- the first non-default GPU

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3193>

9 months agoendSessionDialog: Remove unused UPGRADE_RESTART dialog data
Milan Crha [Tue, 13 Jan 2026 16:49:27 +0000 (17:49 +0100)]
endSessionDialog: Remove unused UPGRADE_RESTART dialog data

The gnome-software D-Bus OfflineUpdates API does not distinguish
between offline updates and offline upgrades, thus the UPGRADE_RESTART
dialog data are not used and can be dropped.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/4034>

9 months agoendSessionDialog: Switch from PackageKit offline updates API to gnome-software
Milan Crha [Tue, 13 Jan 2026 13:45:32 +0000 (14:45 +0100)]
endSessionDialog: Switch from PackageKit offline updates API to gnome-software

Let the endSessionDialog depend on gnome-software when deciding whether
any offline updates are scheduled and what to after applying them,
instead of using PackageKit, which is not included in distributions
using rpm-ostree and similar.

Another advantage is rather than implementing similar calls for various
package managers and systems in gnome-shell, these implementations should
go into the gnome-software, which should know about them already.

Closes https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/7784

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/4034>

9 months agoci: Bump mutter image
Florian Müllner [Tue, 27 Jan 2026 14:36:23 +0000 (15:36 +0100)]
ci: Bump mutter image

The previous image contained a buggy GTK snapshot that would result
in compile failures in some components.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/4052>

9 months agoUpdate Uighur translation
Abduqadir Abliz [Tue, 27 Jan 2026 15:12:32 +0000 (15:12 +0000)]
Update Uighur translation

9 months agoappDisplay: Only create default folders on the first start
Sebastian Keller [Sat, 24 Jan 2026 17:15:43 +0000 (18:15 +0100)]
appDisplay: Only create default folders on the first start

If all folders were removed, after a session restart the default folders
would have been recreated again, effectively preventing users from
using the app grid without folders.

Avoid this problem by only creating the default folders if the
folder-children setting has never been modified before.

Related: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/8713
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/4047>

9 months agobuild: Update libgnome-volume-control revision
Carlos Garnacho [Sun, 25 Jan 2026 08:28:11 +0000 (09:28 +0100)]
build: Update libgnome-volume-control revision

This should fix the crashes seen with bluetooth headsets recently.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/4048>

9 months agoUpdate Chinese (Taiwan) translation
Cheng-Chia Tseng [Mon, 26 Jan 2026 14:35:20 +0000 (14:35 +0000)]
Update Chinese (Taiwan) translation

9 months agoUpdate Russian translation
Artur S0 [Mon, 26 Jan 2026 08:27:40 +0000 (08:27 +0000)]
Update Russian translation

9 months agoUpdate Ukrainian translation
Yuri Chornoivan [Mon, 26 Jan 2026 00:55:57 +0000 (00:55 +0000)]
Update Ukrainian translation

9 months agoUpdate Cornish translation
Flynn Peck [Sun, 25 Jan 2026 22:27:02 +0000 (22:27 +0000)]
Update Cornish translation

9 months agoUpdate Occitan translation
Quentin PAGÈS [Sun, 25 Jan 2026 17:22:39 +0000 (17:22 +0000)]
Update Occitan translation

9 months agoUpdate Georgian translation
Ekaterine Papava [Sun, 25 Jan 2026 09:52:43 +0000 (09:52 +0000)]
Update Georgian translation

9 months agoUpdate Brazilian Portuguese translation
Rafael Fontenelle [Thu, 22 Jan 2026 17:57:17 +0000 (17:57 +0000)]
Update Brazilian Portuguese translation

9 months agodocs: Update valgrind instructions after systemd unit overhaul
Sebastian Keller [Wed, 21 Jan 2026 17:47:49 +0000 (18:47 +0100)]
docs: Update valgrind instructions after systemd unit overhaul

The unit is now run as org.gnome.Shell@user.service and there is no more
x11 variant.

See: https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3960
See: https://gitlab.gnome.org/GNOME/gnome-session/-/merge_requests/167
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/4044>

9 months agost/spinner-content: Fix CoglTexture leak
Sebastian Keller [Wed, 21 Jan 2026 18:50:33 +0000 (19:50 +0100)]
st/spinner-content: Fix CoglTexture leak

Most of the members were getting indirectly freed via the
st_spinner_content_set_actor (spinner, NULL) and the subsequent
st_spinner_content_invalidate () on destruction of the actor or
changing of its content when the spinner is stopped.
The texture however was not freed.

This now frees all members explicitly on finalize.

208 (96 direct, 112 indirect) bytes in 1 blocks are definitely lost in loss record 20,960 of 22,464
   at 0x4D37833: g_type_create_instance (gtype.c:1877)
   by 0x4D1C186: g_object_new_internal.part.0 (gobject.c:2666)
   by 0x4D1E0FA: g_object_new_internal (gobject.c:2982)
   by 0x4D1E0FA: g_object_new_valist (gobject.c:3004)
   by 0x4D1E488: g_object_new (gobject.c:2479)
   by 0x5A8B7CB: _cogl_texture_2d_create_base (cogl-texture-2d.c:84)
   by 0x572D668: st_spinner_content_paint_content (st-spinner-content.c:175)
   by 0x50D2C07: clutter_actor_paint_node (clutter-actor.c:3471)
   by 0x50D2C07: clutter_actor_continue_paint (clutter-actor.c:3726)
   by 0x511D4F9: clutter_paint_node_paint (clutter-paint-node.c:867)
   by 0x50D9717: clutter_actor_paint (clutter-actor.c:3670)
   by 0x574199A: st_viewport_paint (st-viewport.c:483)
   by 0x50D2C42: clutter_actor_continue_paint (clutter-actor.c:3728)
   by 0x511D4F9: clutter_paint_node_paint (clutter-paint-node.c:867)

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/4045>

9 months agoAdd Cornish translation
Flynn Peck [Wed, 21 Jan 2026 13:30:51 +0000 (13:30 +0000)]
Add Cornish translation

9 months agopanel: Use click gesture to trigger window dragging from panel
Carlos Garnacho [Wed, 8 Oct 2025 17:11:37 +0000 (19:11 +0200)]
panel: Use click gesture to trigger window dragging from panel

This gesture is set up on the target phase, in order to ensure only button
presses on the panel itself (and not actors within it) are handled as window
drags.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/4021>

9 months agostatus/keyboard: Drop return value from signal handler
Carlos Garnacho [Tue, 13 Jan 2026 13:11:37 +0000 (14:11 +0100)]
status/keyboard: Drop return value from signal handler

The MetaDisplay::modifiers-accelerator-activated signal no longer
requires a boolean return value.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/4020>

9 months agounlockDialog: Drop seat state check after grab
Carlos Garnacho [Tue, 30 Dec 2025 13:40:37 +0000 (14:40 +0100)]
unlockDialog: Drop seat state check after grab

Grabs are non-failable now, we do not need to check for
the backend seat actually having been able to perform the
request.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/4020>

9 months agoswitcherPopup: Drop seat state check after grabs
Carlos Garnacho [Tue, 30 Dec 2025 13:40:06 +0000 (14:40 +0100)]
switcherPopup: Drop seat state check after grabs

Grabs are non-failable now, we do not need to check for
the backend seat actually having been able to perform the
request.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/4020>

9 months agoscreenShield: Drop seat state check after grabs
Carlos Garnacho [Tue, 30 Dec 2025 13:39:05 +0000 (14:39 +0100)]
screenShield: Drop seat state check after grabs

Grabs are non-failable now, we do not need to check for
the backend seat actually having been able to perform the
request.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/4020>

9 months agooverview: Drop seat state check after grab
Carlos Garnacho [Tue, 30 Dec 2025 13:36:47 +0000 (14:36 +0100)]
overview: Drop seat state check after grab

Grabs are non-failable now, we do not need to check for
the backend seat actually having been able to perform the
request.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/4020>

9 months agomodalDialog: Drop seat state check after grabs
Carlos Garnacho [Tue, 30 Dec 2025 13:36:18 +0000 (14:36 +0100)]
modalDialog: Drop seat state check after grabs

Grabs are non-failable now, we do not need to check for
the backend seat actually having been able to perform the
request.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/4020>

9 months agolookingGlass: Drop seat state check after grabs
Carlos Garnacho [Tue, 30 Dec 2025 13:35:50 +0000 (14:35 +0100)]
lookingGlass: Drop seat state check after grabs

Grabs are non-failable now, we do not need to check for
the backend seat actually having been able to perform the
request.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/4020>

9 months agograbHelper: Drop seat state check after grab
Carlos Garnacho [Tue, 30 Dec 2025 13:35:21 +0000 (14:35 +0100)]
grabHelper: Drop seat state check after grab

Grabs are non-failable now, we do not need to check for
the backend seat actually having been able to perform the
request.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/4020>

9 months agodnd: Drop seat state check
Carlos Garnacho [Tue, 30 Dec 2025 13:34:00 +0000 (14:34 +0100)]
dnd: Drop seat state check

Grabs are non-failable now, we do not need to check for
the backend seat actually having been able to perform the
request.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/4020>

9 months agokeyboardManager: Remove unnecessary calls
Carlos Garnacho [Tue, 30 Dec 2025 11:36:57 +0000 (12:36 +0100)]
keyboardManager: Remove unnecessary calls

There is no longer need to freeze/unfreeze/ungrab the keyboard.
This API was only effective in the X11 backend.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/4020>

9 months agoworkspaceAnimation: Perform a grab during workspace switch gestures
Carlos Garnacho [Tue, 30 Dec 2025 12:24:41 +0000 (13:24 +0100)]
workspaceAnimation: Perform a grab during workspace switch gestures

Currently, the mechanism to reclaim touch input from clients and into
the gesture is somewhat indirect:
- The swipeTracker gesture(s) will enter in a recognized state
- The MetaGestureTracker will notice the recognized state on a gesture
  set up in the ClutterStage actor, and emit META_SEQUENCE_ACCEPTED
  on the sequence
- The core will notice the sequence being accepted and call
  meta_display_cancel_touch()/meta_wayland_touch_cancel()
- This eventually results in wl_touch.cancel on the affected client(s)

This is a bit too convoluted and special cased, so claim input using
a more traditional way: Using a Clutter grab. This will also result in
touch being cancelled on the Wayland side. This will happen along with
other input, but that's actually a consistence improvemente, since the
other method would not prevent other input (e.g. pointer) while the
workspace gesture is ongoing. This results in glitchy behavior if
multiple input devices are used simultaneously.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/4020>

9 months agoUpdate Norwegian Bokmål translation
Kjartan Maraas [Mon, 19 Jan 2026 14:49:02 +0000 (14:49 +0000)]
Update Norwegian Bokmål translation

9 months agoUpdate Turkish translation
Sabri Ünal [Mon, 19 Jan 2026 12:05:59 +0000 (12:05 +0000)]
Update Turkish translation

9 months agoscreenshot: Port to cursors set through ClutterActor
Carlos Garnacho [Wed, 5 Nov 2025 14:00:25 +0000 (15:00 +0100)]
screenshot: Port to cursors set through ClutterActor

Use the UIAreaIndicator, SelectArea and PickPixel actors for
this interaction, instead of a globally set cursor.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3952>